using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Decisions.HL7.Message;
using DecisionsFramework;

namespace Decisions.HL7.Message
{
    public class MessageTypeAttribute:RuleAttribute
    {
        private Dictionary<HL7Version, string[]> validVersionCodes = new Dictionary<HL7Version, string[]>();
        private Dictionary<HL7Version, string[]> validVersionDescriptions = new Dictionary<HL7Version, string[]>();
        private Dictionary<HL7Version, HL7TableType> tableVersionTypes = new Dictionary<HL7Version, HL7TableType>();

        public MessageTypeAttribute()
        {
            // init the values for table version types
						tableVersionTypes[HL7Version.v23] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v231] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v24] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v25] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v251] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v26] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v27] = HL7TableType.HL7;
			
            
			// init the values for version codes
						validVersionCodes[HL7Version.v23] = new string[]{"DSR","EDR","EQQ","ERP","ERQ","MCF","MDM","MFD","MFK","MFN","MFQ","MFR","ORF","ORM","ORR","ORU","OSQ","OSR","PEX","PGL","PIN","QRY","RAR","RAS","RCI","RCL","RDE","RDR","RDS","REF","RER","RGR","RGV","ROC","ROD","ROR","RPA","RPI","RPL","RPR","RQA","RRA","RRD","RRE","RRG","RRI","SIU","SPQ","SQM","SQR","SRM","SRR","TBR","UDM","VQQ","VXQ","VXR","VXU","VXX","ACK","ADR","ADT","ARD","BAR","CNQ","CSU","DFT","PPR","RQI","RQP","RQQ","PPT","PPV","PRR","PTR","QCK","DOC","RQC","PPG"};
						validVersionCodes[HL7Version.v231] = new string[]{"ACK","ADR","ARD","ADT","BAR","CRM","CSU","DFT","DOC","DSR","EDR","EQQ","ERP","MCF","MDM","MFN","MFK","MFD","MFQ","MFR","NMD","NMQ","NMR","ORF","ORM","ORR","ORU","OSQ","OSR","PEX","PGL","PIN","PPG","PPP","PPR","PPT","PPV","PRR","PTR","QCK","QRY","RAR","RAS","RCI","RCL","RDE","RDR","RDS","REF","RER","RGV","RGR","ROR","RPA","RPI","RPL","RPR","RQA","RQC","RQI","RQP","RQQ","RRA","RRD","RRE","RRG","RRI","SIU","SPQ","SQM","SQR","SRM","SRR","SUR","TBR","UDM","VQQ","VXQ","VXX","VXR","VXU"};
						validVersionCodes[HL7Version.v24] = new string[]{"ACK","ADR","ADT","BAR","CRM","CSU","DFT","DOC","DSR","EAC","EAN","EAR","EDR","EQQ","ERP","ESR","ESU","INR","INU","LSR","LSU","MCF","MDM","MFD","MFK","MFN","MFQ","MFR","NMD","NMQ","NMR","OMD","OMG","OML","OMN","OMP","OMS","ORD","ORF","ORG","ORL","ORM","ORN","ORP","ORR","ORS","ORU","OSQ","OSR","OUL","PEX","PGL","PIN","PMU","PPG","PPP","PPR","PPT","PPV","PRR","PTR","QBP","QCK","QCN","QRY","QSB","QSX","QVR","ROR","RAR","RAS","RCI","RCL","RDE","RDR","RDS","RDY","REF","RER","RGR","RGV","RPA","RPI","RPL","RPR","RQA","RQC","RQI","RQP","RQQ","RRA","RRD","RRE","RRG","RRI","RSP","RTB","SIU","SPQ","SQM","SQR","SRM","SRR","SSR","SSU","SUR","TBR","TCR","TCU","UDM","VQQ","VXQ","VXR","VXU","VXX"};
						validVersionCodes[HL7Version.v25] = new string[]{"ACK","ADR","ADT","BAR","CRM","BPS","BRP","BRT","BTS","CSU","DFT","DOC","DSR","EAC","EAN","EAR","EDR","EQQ","ERP","ESR","ESU","INR","INU","LSR","LSU","MCF","MDM","MFD","MFK","MFN","MFQ","MFR","NMD","NMQ","NMR","OMB","OMD","OMG","OMI","OML","OMN","OMP","OMS","ORB","ORD","ORF","ORG","ORI","ORL","ORM","ORN","ORP","ORR","ORS","ORU","OSQ","OSR","OUL","PEX","PGL","PIN","PMU","PPG","PPP","PPR","PPT","PPV","PRR","PTR","QBP","QCK","QCN","QRY","QSB","QSX","QVR","RAR","RAS","RCI","RCL","RDE","RDR","RDS","RDY","REF","RER","RGR","RGV","ROR","RPA","RPI","RPL","RPR","RQA","RQC","RQI","RQP","RQQ","RRA","RRD","RRE","RRG","RRI","RSP","RTB","SIU","SPQ","SQM","SQR","SRM","SRR","SSR","SSU","SUR","TBR","TCR","TCU","UDM","VQQ","VXQ","VXR","VXU","VXX"};
						validVersionCodes[HL7Version.v251] = new string[]{"ACK","ADR","ADT","BAR","CRM","BPS","BRP","BRT","BTS","CSU","DFT","DOC","DSR","EAC","EAN","EAR","EDR","EQQ","ERP","ESR","ESU","INR","INU","LSR","LSU","MCF","MDM","MFD","MFK","MFN","MFQ","MFR","NMD","NMQ","NMR","OMB","OMD","OMG","OMI","OML","OMN","OMP","OMS","ORB","ORD","ORF","ORG","ORI","ORL","ORM","ORN","ORP","ORR","ORS","ORU","OSQ","OSR","OUL","PEX","PGL","PIN","PMU","PPG","PPP","PPR","PPT","PPV","PRR","PTR","QBP","QCK","QCN","QRY","QSB","QSX","QVR","RAR","RAS","RCI","RCL","RDE","RDR","RDS","RDY","REF","RER","RGR","RGV","ROR","RPA","RPI","RPL","RPR","RQA","RQC","RQI","RQP","RQQ","RRA","RRD","RRE","RRG","RRI","RSP","RTB","SIU","SPQ","SQM","SQR","SRM","SRR","SSR","SSU","SUR","TBR","TCR","TCU","UDM","VQQ","VXQ","VXR","VXU","VXX"};
						validVersionCodes[HL7Version.v26] = new string[]{"ACK","ADR","ADT","BAR","CRM","BPS","BRP","BRT","BTS","CSU","DFT","DOC","DSR","EAC","EAN","EAR","EHC","ESR","ESU","INR","INU","LSR","LSU","MDM","MFD","MFK","MFN","MFQ","MFR","NMD","NMQ","NMR","OMB","OMD","OMG","OMI","OML","OMN","OMP","OMS","OPL","OPR","OPU","ORB","ORD","ORF","ORG","ORI","ORL","ORM","ORN","ORP","ORR","ORS","ORU","OSQ","OSR","OUL","PEX","PGL","PIN","PMU","PPG","PPP","PPR","PPT","PPV","PRR","PTR","QBP","QCK","QCN","QRY","QSB","QSX","QVR","RAR","RAS","RCI","RCL","RDE","RDR","RDS","RDY","REF","RER","RGR","RGV","ROR","RPA","RPI","RPL","RPR","RQA","RQC","RQI","RQP","RRA","RRD","RRE","RRG","RRI","RSP","RTB","SCN","SDN","SDR","SIU","SLN","SLR","SMD","SQM","SQR","SRM","SRR","SSR","SSU","STC","STI","SUR","TBR","TCR","TCU","UDM","VXQ","VXR","VXU","VXX"};
						validVersionCodes[HL7Version.v27] = new string[]{"ACK","ADR","ADT","BAR","CCF","CCI","CCM","CCQ","CCU","CQU","CRM","BPS","BRP","BRT","BTS","CSU","DFT","DOC","DSR","EAC","EAN","EAR","EHC","ESR","ESU","INR","INU","LSR","LSU","MDM","MFD","MFK","MFN","MFQ","MFR","NMD","NMQ","NMR","OMB","OMD","OMG","OMI","OML","OMN","OMP","OMS","OPL","OPR","OPU","ORA","ORB","ORD","ORF","ORG","ORI","ORL","ORM","ORN","ORP","ORR","ORS","ORU","OSM","OSQ","OSR","OUL","PEX","PGL","PIN","PMU","PPG","PPP","PPR","PPT","PPV","PRR","PTR","QBP","QCK","QCN","QRY","QSB","QSX","QVR","RAR","RAS","RCI","RCL","RDE","RDR","RDS","RDY","REF","RER","RGR","RGV","ROR","RPA","RPI","RPL","RPR","RQA","RQC","RQI","RQP","RRA","RRD","RRE","RRG","RRI","RSP","RTB","SCN","SDN","SDR","SIU","SLN","SLR","SMD","SQM","SQR","SRM","SRR","SSR","SSU","STC","STI","SUR","TBR","TCR","TCU","UDM","VXQ","VXR","VXU","VXX"};
			
			// init the values for version descriptions
						validVersionDescriptions[HL7Version.v23] = new string[]{"Display response","Enhanced display response","Embedded query language query","Event replay response","Event replay query","Delayed acknowledgment","Documentation message","Master files delayed application ack","Master files application ack","Master files notification","Master files query","Master files query response","Observ. result/record response","Order message","Order acknowledgment message","Observ result/unsolicited","Order status query","Order status response","Product experience","Patient goal","Patient information","Query, original Mode","Pharmacy administration information","Pharmacy administration message","Return clinical information","Return clinical list","Pharmacy encoded order message","Pharmacy dispense information","Pharmacy dispense message","Patient referral","Pharmacy encoded order information","Pharmacy dose information","Pharmacy give message","Request clinical information","Request pateint demographics","Pharmacy prescription order response","Return patient authorization","Return patient information","Return patient display list","Return patient list","Request patient authorization","Pharmacy administration acknowledgment","Pharmacy dispense acknowledgment","Pharmacy encoded order acknowledgment","Pharmacy give acknowledgment","Return patient referral","Schedule information unsolicited","Stored procedure request","Schedule query","Schedule query response","Study registration","Scheduled request response","Tabular response","Unsolicited display message","Virtual table query","Query for vaccination record","Vaccination query record response","Unsolicited vaccinnation record update","Vaccination query response with multiple PID matches","General acknowledgment message","Patient query response","ADT message","Ancillary RPT (display)","Add/change billing account","Cancel query","Unsolicited clinical study data","Detail financial transaction","Patient problem","Request patient information","Request Patient Demographics","??? Page 2-68","Patient Pathway (goal oriented) response","Patient Goal Response","Patient Problem Response","Patient Pathway (problem-oriented) response","Query General  Acknowledgment","Document Response","Request Clinical Information","Patient Pathway (goal-oriented) message"};
						validVersionDescriptions[HL7Version.v231] = new string[]{"General acknowledgment message","ADT response","Ancillary RPT (display) (for backward compatibility only)","ADT message","Add/change billing account","Clinical study registration","Unsolicited clinical study data","Detail financial transaction","Document query","Display response","Enhanced display response","Embedded query language query","Event replay response","Delayed acknowledgment","Documentation message","Master files notification","Master files application acknowledgment","Master files delayed application acknowledgment","Master files query","Master files query response","Network management data","Network management query","Network management response","Observ. result/record response","Order message","Order acknowledgment message","Observ result/unsolicited","Order status query","Order status response","Product experience","Patient goal","Patient insurance information","Patient pathway (goal-oriented) message","Patient pathway (problem-oriented) message","Patient problem","Patient pathway (goal oriented) response","Patient goal response","Patient problem response","Patient pathway (problem-oriented) response","Query general acknowledgment","Query, original mode","Pharmacy administration information","Pharmacy administration message","Return clinical information","Return clinical list","Pharmacy encoded order message","Pharmacy dispense information","Pharmacy dispense message","Patient referral","Pharmacy encoded order information","Pharmacy give message","Pharmacy dose information","Pharmacy prescription order response","Return patient authorization","Return patient information","Return patient display list","Return patient list","Request patient authorization","Request clinical information","Request patient information","Request patient demographics","Event replay query","Pharmacy administration acknowledgment","Pharmacy dispense acknowledgment","Pharmacy encoded order acknowledgment","Pharmacy give acknowledgment","Return patient referral","Schedule information unsolicited","Stored procedure request","Schedule query","Schedule query response","Schedule request","Scheduled request response","Summary product experience report","Tabular data response","Unsolicited display message","Virtual table query","Query for vaccination record","Vaccination query response with multiple PID matches","Vaccination query record response","Unsolicited vaccination record update"};
						validVersionDescriptions[HL7Version.v24] = new string[]{"General acknowledgment message","ADT response","ADT message","Add/change billing account","Clinical study registration message","Unsolicited study data message","Detail financial transactions","Document response","Display response","Automated equipment command message","Automated equipment notification message","Automated equipment response message","Enhanced display response","Embedded query language query","Event replay response","Automated equipment status update acknowledgement message","Automated equipment status update message","Automated equipment inventory request message","Automated equipment inventory update message","Automated equipment log/service request message","Automated equipment log/service update message","Delayed Acknowledgement (Retained for backward compatibility only)","Medical document management","Master files delayed application acknowledgment","Master files application acknowledgment","Master files notification","Master files query","Master files response","Application management data message","Application management query message","Application management response message","Dietary order","General clinical order message","Laboratory order message","Non-stock requisition order message","Pharmacy/treatment order message","Stock requisition order message","Dietary order - General order acknowledgment message","Query for results of observation","General clinical order acknowledgement message","Laboratory acknowledgement message (unsolicited)","Pharmacy/treatment order message","Non-stock requisition - General order acknowledgment message","Pharmacy/treatment order acknowledgement message","General order response message response to any ORM","Stock requisition - General order acknowledgment message","Unsolicited transmission of an observation message","Query response for order status","Query response for order status","Unsolicited laboratory observation message","Product experience message","Patient goal message","Patient insurance information","Add personnel record","Patient pathway message (goal-oriented)","Patient pathway message (problem-oriented)","Patient problem message","Patient pathway goal-oriented response","Patient goal response","Patient problem response","Patient pathway problem-oriented response","Query by parameter","Deferred query","Cancel query","Query, original mode","Create subscription","Cancel subscription/acknowledge message","Query for previous events","Pharmacy/treatment order response","Pharmacy/treatment administration information","Pharmacy/treatment administration message","Return clinical information","Return clinical list","Pharmacy/treatment encoded order message","Pharmacy/treatment dispense information","Pharmacy/treatment dispense message","Display based response","Patient referral","Pharmacy/treatment encoded order information","Pharmacy/treatment dose information","Pharmacy/treatment give message","Return patient authorization","Return patient information","Return patient display list","Return patient list","Request patient authorization","Request clinical information","Request patient information","Request patient demographics","Event replay query","Pharmacy/treatment administration acknowledgement message","Pharmacy/treatment dispense acknowledgment message","Pharmacy/treatment encoded order acknowledgment message","Pharmacy/treatment give acknowledgment message","Return referral information","Segment pattern response","Tabular response","Schedule information unsolicited","Stored procedure request","Schedule query message","Schedule query response","Schedule request message","Scheduled request response","Specimen status request message","Specimen status update message","Summary product experience report","Tabular data response","Automated equipment test code settings request message","Automated equipment test code settings update message","Unsolicited display update message","Virtual table query","Query for vaccination record","Vaccination record response","Unsolicited vaccination record update","Response for vaccination query with multiple PID matches"};
						validVersionDescriptions[HL7Version.v25] = new string[]{"General acknowledgment message","ADT response","ADT message","Add/change billing account","Clinical study registration message","Blood product dispense status message","Blood product dispense status acknowledgement message","Blood product transfusion/disposition acknowledgement message","Blood product transfusion/disposition message","Unsolicited study data message","Detail financial transactions","Document response","Display response","Automated equipment command message","Automated equipment notification message","Automated equipment response message","Enhanced display response","Embedded query language query","Event replay response","Automated equipment status update acknowledgment message","Automated equipment status update message","Automated equipment inventory request message","Automated equipment inventory update message","Automated equipment log/service request message","Automated equipment log/service update message","Delayed Acknowledgment (Retained for backward compatibility only)","Medical document management","Master files delayed application acknowledgment","Master files application acknowledgment","Master files notification","Master files query","Master files response","Application management data message","Application management query message","Application management response message","Blood product order message","Dietary order","General clinical order message","Imaging order","Laboratory order message","Non-stock requisition order message","Pharmacy/treatment order message","Stock requisition order message","Blood product order acknowledgement message","Dietary order acknowledgment message","Query for results of observation","General clinical order acknowledgment message","Imaging order acknowledgement message","Laboratory acknowledgment message (unsolicited)","Pharmacy/treatment order message","Non-stock requisition - General order acknowledgment message","Pharmacy/treatment order acknowledgment message","General order response message response to any ORM","Stock requisition - Order acknowledgment message","Unsolicited transmission of an observation message","Query response for order status","Query response for order status","Unsolicited laboratory observation message","Product experience message","Patient goal message","Patient insurance information","Add personnel record","Patient pathway message (goal-oriented)","Patient pathway message (problem-oriented)","Patient problem message","Patient pathway goal-oriented response","Patient goal response","Patient problem response","Patient pathway problem-oriented response","Query by parameter","Deferred query","Cancel query","Query, original mode","Create subscription","Cancel subscription/acknowledge message","Query for previous events","Pharmacy/treatment administration information","Pharmacy/treatment administration message","Return clinical information","Return clinical list","Pharmacy/treatment encoded order message","Pharmacy/treatment dispense information","Pharmacy/treatment dispense message","Display based response","Patient referral","Pharmacy/treatment encoded order information","Pharmacy/treatment dose information","Pharmacy/treatment give message","Pharmacy/treatment order response","Return patient authorization","Return patient information","Return patient display list","Return patient list","Request patient authorization","Request clinical information","Request patient information","Request patient demographics","Event replay query","Pharmacy/treatment administration acknowledgment message","Pharmacy/treatment dispense acknowledgment message","Pharmacy/treatment encoded order acknowledgment message","Pharmacy/treatment give acknowledgment message","Return referral information","Segment pattern response","Tabular response","Schedule information unsolicited","Stored procedure request","Schedule query message","Schedule query response","Schedule request message","Scheduled request response","Specimen status request message","Specimen status update message","Summary product experience report","Tabular data response","Automated equipment test code settings request message","Automated equipment test code settings update message","Unsolicited display update message","Virtual table query","Query for vaccination record","Vaccination record response","Unsolicited vaccination record update","Response for vaccination query with multiple PID matches"};
						validVersionDescriptions[HL7Version.v251] = new string[]{"General acknowledgment message","ADT response","ADT message","Add/change billing account","Clinical study registration message","Blood product dispense status message","Blood product dispense status acknowledgement message","Blood product transfusion/disposition acknowledgement message","Blood product transfusion/disposition message","Unsolicited study data message","Detail financial transactions","Document response","Display response","Automated equipment command message","Automated equipment notification message","Automated equipment response message","Enhanced display response","Embedded query language query","Event replay response","Automated equipment status update acknowledgment message","Automated equipment status update message","Automated equipment inventory request message","Automated equipment inventory update message","Automated equipment log/service request message","Automated equipment log/service update message","Delayed Acknowledgment (Retained for backward compatibility only)","Medical document management","Master files delayed application acknowledgment","Master files application acknowledgment","Master files notification","Master files query","Master files response","Application management data message","Application management query message","Application management response message","Blood product order message","Dietary order","General clinical order message","Imaging order","Laboratory order message","Non-stock requisition order message","Pharmacy/treatment order message","Stock requisition order message","Blood product order acknowledgement message","Dietary order acknowledgment message","Query for results of observation","General clinical order acknowledgment message","Imaging order acknowledgement message","Laboratory acknowledgment message (unsolicited)","Pharmacy/treatment order message","Non-stock requisition - General order acknowledgment message","Pharmacy/treatment order acknowledgment message","General order response message response to any ORM","Stock requisition - Order acknowledgment message","Unsolicited transmission of an observation message","Query response for order status","Query response for order status","Unsolicited laboratory observation message","Product experience message","Patient goal message","Patient insurance information","Add personnel record","Patient pathway message (goal-oriented)","Patient pathway message (problem-oriented)","Patient problem message","Patient pathway goal-oriented response","Patient goal response","Patient problem response","Patient pathway problem-oriented response","Query by parameter","Deferred query","Cancel query","Query, original mode","Create subscription","Cancel subscription/acknowledge message","Query for previous events","Pharmacy/treatment administration information","Pharmacy/treatment administration message","Return clinical information","Return clinical list","Pharmacy/treatment encoded order message","Pharmacy/treatment dispense information","Pharmacy/treatment dispense message","Display based response","Patient referral","Pharmacy/treatment encoded order information","Pharmacy/treatment dose information","Pharmacy/treatment give message","Pharmacy/treatment order response","Return patient authorization","Return patient information","Return patient display list","Return patient list","Request patient authorization","Request clinical information","Request patient information","Request patient demographics","Event replay query","Pharmacy/treatment administration acknowledgment message","Pharmacy/treatment dispense acknowledgment message","Pharmacy/treatment encoded order acknowledgment message","Pharmacy/treatment give acknowledgment message","Return referral information","Segment pattern response","Tabular response","Schedule information unsolicited","Stored procedure request","Schedule query message","Schedule query response","Schedule request message","Scheduled request response","Specimen status request message","Specimen status update message","Summary product experience report","Tabular data response","Automated equipment test code settings request message","Automated equipment test code settings update message","Unsolicited display update message","Virtual table query","Query for vaccination record","Vaccination record response","Unsolicited vaccination record update","Response for vaccination query with multiple PID matches"};
						validVersionDescriptions[HL7Version.v26] = new string[]{"General acknowledgment message","ADT response","ADT message","Add/change billing account","Clinical study registration message","Blood product dispense status message","Blood product dispense status acknowledgement message","Blood product transfusion/disposition acknowledgement message","Blood product transfusion/disposition message","Unsolicited study data message","Detail financial transactions","Document response","Display response","Automated equipment command message","Automated equipment notification message","Automated equipment response message","Health Care Invoice","Automated equipment status update acknowledgment message","Automated equipment status update message","Automated equipment inventory request message","Automated equipment inventory update message","Automated equipment log/service request message","Automated equipment log/service update message","Medical document management","Master files delayed application acknowledgment","Master files application acknowledgment","Master files notification","Master files query","Master files response","Application management data message","Application management query message","Application management response message","Blood product order message","Dietary order","General clinical order message","Imaging order","Laboratory order message","Non-stock requisition order message","Pharmacy/treatment order message","Stock requisition order message","Population/Location-Based Laboratory Order Message","Population/Location-Based Laboratory Order Acknowledgment Message","Unsolicited Population/Location-Based Laboratory Observation Message","Blood product order acknowledgement message","Dietary order acknowledgment message","Query for results of observation","General clinical order acknowledgment message","Imaging order acknowledgement message","Laboratory acknowledgment message (unsolicited)","Pharmacy/treatment order message","Non-stock requisition - General order acknowledgment message","Pharmacy/treatment order acknowledgment message","General order response message response to any ORM","Stock requisition - Order acknowledgment message","Unsolicited transmission of an observation message","Query response for order status","Query response for order status","Unsolicited laboratory observation message","Product experience message","Patient goal message","Patient insurance information","Add personnel record","Patient pathway message (goal-oriented)","Patient pathway message (problem-oriented)","Patient problem message","Patient pathway goal-oriented response","Patient goal response","Patient problem response","Patient pathway problem-oriented response","Query by parameter","Deferred query","Cancel query","Query, original mode","Create subscription","Cancel subscription/acknowledge message","Query for previous events","Pharmacy/treatment administration information","Pharmacy/treatment administration message","Return clinical information","Return clinical list","Pharmacy/treatment encoded order message","Pharmacy/treatment dispense information","Pharmacy/treatment dispense message","Display based response","Patient referral","Pharmacy/treatment encoded order information","Pharmacy/treatment dose information","Pharmacy/treatment give message","Pharmacy/treatment order response","Return patient authorization","Return patient information","Return patient display list","Return patient list","Request patient authorization","Request clinical information","Request patient information","Request patient demographics","Pharmacy/treatment administration acknowledgment message","Pharmacy/treatment dispense acknowledgment message","Pharmacy/treatment encoded order acknowledgment message","Pharmacy/treatment give acknowledgment message","Return referral information","Segment pattern response","Tabular response","Notification of Anti-Microbial Device Cycle Data","Notification of Anti-Microbial Device Data","Sterilization anti-microbial device data request","Schedule information unsolicited","Notification of New Sterilization Lot","Sterilization lot request","Sterilization anti-microbial device cycle data request","Schedule query message","Schedule query response","Schedule request message","Scheduled request response","Specimen status request message","Specimen status update message","Notification of Sterilization Configuration","Sterilization item request","Summary product experience report","Tabular data response","Automated equipment test code settings request message","Automated equipment test code settings update message","Unsolicited display update message","Query for vaccination record","Vaccination record response","Unsolicited vaccination record update","Response for vaccination query with multiple PID matches"};
						validVersionDescriptions[HL7Version.v27] = new string[]{"General acknowledgment message","ADT response","ADT message","Add/change billing account","Collaborative Care Fetch","Collaborative Care Information","Collaborative Care Message","Collaborative Care Referral","Collaborative Care Referral","Collaborative Care Referral","Clinical study registration message","Blood product dispense status message","Blood product dispense status acknowledgement message","Blood product transfusion/disposition acknowledgement message","Blood product transfusion/disposition message","Unsolicited study data message","Detail financial transactions","Document response","Display response","Automated equipment command message","Automated equipment notification message","Automated equipment response message","Health Care Invoice","Automated equipment status update acknowledgment message","Automated equipment status update message","Automated equipment inventory request message","Automated equipment inventory update message","Automated equipment log/service request message","Automated equipment log/service update message","Medical document management","Master files delayed application acknowledgment","Master files application acknowledgment","Master files notification","Master files query","Master files response","Application management data message","Application management query message","Application management response message","Blood product order message","Dietary order","General clinical order message","Imaging order","Laboratory order message","Non-stock requisition order message","Pharmacy/treatment order message","Stock requisition order message","Population/Location-Based Laboratory Order Message","Population/Location-Based Laboratory Order Acknowledgment Message","Unsolicited Population/Location-Based Laboratory Observation Message","Observation Report  Acknowledgment","Blood product order acknowledgement message","Dietary order acknowledgment message","Query for results of observation","General clinical order acknowledgment message","Imaging order acknowledgement message","Laboratory acknowledgment message (unsolicited)","Pharmacy/treatment order message","Non-stock requisition - General order acknowledgment message","Pharmacy/treatment order acknowledgment message","General order response message response to any ORM","Stock requisition - Order acknowledgment message","Unsolicited transmission of an observation message","Specimen Shipment Message","Query response for order status","Query response for order status","Unsolicited laboratory observation message","Product experience message","Patient goal message","Patient insurance information","Add personnel record","Patient pathway message (goal-oriented)","Patient pathway message (problem-oriented)","Patient problem message","Patient pathway goal-oriented response","Patient goal response","Patient problem response","Patient pathway problem-oriented response","Query by parameter","Deferred query","Cancel query","Query, original mode","Create subscription","Cancel subscription/acknowledge message","Query for previous events","Pharmacy/treatment administration information","Pharmacy/treatment administration message","Return clinical information","Return clinical list","Pharmacy/treatment encoded order message","Pharmacy/treatment dispense information","Pharmacy/treatment dispense message","Display based response","Patient referral","Pharmacy/treatment encoded order information","Pharmacy/treatment dose information","Pharmacy/treatment give message","Pharmacy/treatment order response","Return patient authorization","Return patient information","Return patient display list","Return patient list","Request patient authorization","Request clinical information","Request patient information","Request patient demographics","Pharmacy/treatment administration acknowledgment message","Pharmacy/treatment dispense acknowledgment message","Pharmacy/treatment encoded order acknowledgment message","Pharmacy/treatment give acknowledgment message","Return referral information","Segment pattern response","Tabular response","Notification of Anti-Microbial Device Cycle Data","Notification of Anti-Microbial Device Data","Sterilization anti-microbial device data request","Schedule information unsolicited","Notification of New Sterilization Lot","Sterilization lot request","Sterilization anti-microbial device cycle data request","Schedule query message","Schedule query response","Schedule request message","Scheduled request response","Specimen status request message","Specimen status update message","Notification of Sterilization Configuration","Sterilization item request","Summary product experience report","Tabular data response","Automated equipment test code settings request message","Automated equipment test code settings update message","Unsolicited display update message","Query for vaccination record","Vaccination record response","Unsolicited vaccination record update","Response for vaccination query with multiple PID matches"};
			            

        }

        
        public override ValidationIssue[] RunRule(string name, object owningObject, object value)
        {
            //todo: check if the value is valid in the current version
            //if the value is not valid in the current version, add it as a validation issue


            return new ValidationIssue[0];
        }
    }
}
